IOS12+Swift4+Xcode10开发 - 2 木琴APP

项目介绍

按下不同的按键,发出不同的音调。

image-20190305222641892

Tag

// 3.1 通过tag获取被按下的button
let indexTag = sender.tag

多媒体播放器

// 1.引入多媒体播放器
import AVFoundation

// 2.声明播放器,用于播放url的多媒体文件
var player:AVAudioPlayer!

// 3.4 将“音频”放入“播放器”
player = try AVAudioPlayer(contentsOf: url!)

// 3.5 播放音频
player.play()

url

// Bundlez最外面(苹果为整个取得APP的名字)

// main为主要同名文件夹

// 直接可以取到的原因:SoundFile是一个组,不是文件夹

let url = Bundle.main.url(forResource: “note(indexTag)”, withExtension: “wav”)

编组:可以帮助项目整理同类型,且不同使用文件,获取文件更方便

image-20190305224110377

抛异常

// 抛异常: 播放器可能为空

do{
}catch{
print(error)
}

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import UIKit
// 1.引入多媒体播放器
import AVFoundation

class ViewController: UIViewController{

// 2.声明播放器,用于播放url的多媒体文件
var player:AVAudioPlayer!
// 音频资源
let sounds = ["note1","note2","note3","note4","note5","note6","note7"]

override func viewDidLoad() {
super.viewDidLoad()
}

// 3.根据按下的button,播放不同的声音
// 用户按下这个控件sender,按钮
@IBAction func notePressed(_ sender: UIButton) {

// 3.1 通过tag获取被按下的button 1-5,下标需要为0-4
let indexTag:Int = sender.tag - 1
// 3.2 播放音频
play(tag:indexTag)

}

/* 创建一个发出声音的功能函数
输入为第几个声音Int
*/
func play(tag:Int){

// 1 根据tag不同,获得不同“音频”
// Bundlez最外面(苹果为整个取得APP的名字)
// main为主要同名文件夹
// 直接可以取到的原因:SoundFile是一个组,不是文件夹
let url = Bundle.main.url(forResource: sounds[tag], withExtension: "wav")

// 抛异常: 播放器可能为空
do{
// 2 将“音频”放入“播放器”
player = try AVAudioPlayer(contentsOf: url!)
// 3 播放音频
player.play()
}catch{
print(error)
}
}
}